Clean Code,老聖經一本,是一本如何撰寫大家都能輕易看懂的Code,當中最重要的是閱讀程式,因此特別開一篇文章聊一聊閱讀程式,主要是未來希望能拿來當教育訓練用的文件。
以下會用一個題目當範例,當然這也是我常用的面試題,並在後續留下常見的解,請各位體驗一下,何謂閱讀程式。
5/28 09:30對於許多內容增加了語意修正,解釋。
這是會議過後,PM給的客戶需求,需求為:
完成以下閏年的規則的Function,無論語言。
以下會列出常見的幾種答案,並且在下面註解用中文閱讀的狀況。
function isLeap(year) {
return ((year % 4) === 0 && (year % 100) !== 0) || (year % 400) === 0;
}
function isLeap(year) {
if (year % 4 === 0 && year % 100 !== 0) return true;
else if (year % 400 === 0) return true;
else return false;
}
function isLeap(year) {
if (year % 4 === 0) {
if (year % 100 === 0) {
if (year % 400 === 0) {
return true;
} else {
return false;
}
} else {
return true;
} else {
return false;
}
}
如下圖:
function isLeap(year) {
if (year % 400 === 0) return true;
else if (year % 100 === 0) return false;
else if (year % 4 === 0) return true;
else return false;
}
function isLeap(year) {
if (year % 4 !== 0) return false;
if (year % 4 === 0 && year % 100 !== 0) return true;
if (year % 100 === 0 && year % 400 !== 0) return false;
if (year % 400 === 0) return true;
}
function isLeap(year) {
if (year % 4 !== 0) return false;
else if (year % 100 !== 0) return true;
else if (year % 400 !== 0) return false;
return true;
}
個人會選擇答案5或答案6,原因是,今天PM、客戶,在會議後,提出了非常明確的需求,我不建議去做轉換(換句話說),這樣的行為在我的工作經驗中,是具有高風險的,非常常看到,難解的邏輯bug都是放在這種狀況內,如果一開始就選擇答案5、答案6去撰寫程式,一來你會code會完成的非常快,因為只做翻譯;二來不可能失誤,會失誤的話,PM、客戶剛開始就是錯的,如果真的不滿意這樣的需求,也應該透過會議討論修正。
對於效能爭議,我認為這個爭議是非常小的,原因如下:
這是我第一次在iT邦幫忙發文,未來是否發文,就看有沒有我現實工作上討論到爛掉的話題了,謝謝大家。